package backing;

import java.util.ArrayList;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import DAO.AbstractDAO;
import DAO.CargoDAO;
import to.Cargo;
import util.JSFUtil;

@ManagedBean
@ViewScoped
public class CargoBacking {

	private Cargo cargoSalvar = new Cargo();
	private Cargo cargoSelecionado = null;;
	private ArrayList<Cargo> listaCargo = null;

	AbstractDAO abstractDAO = new AbstractDAO();
	CargoDAO cargoDAO = new CargoDAO();

	public void salvar(){
		try {
			cargoSalvar.setDescricao(cargoSalvar.getDescricao().toUpperCase());
			abstractDAO.saveOrUpdate(cargoSalvar);
			if(cargoSelecionado != null){
				JSFUtil.addInfoMessage("Cargo Alterado com sucesso.");
			}else {
				JSFUtil.addInfoMessage("Cargo Salvo com sucesso.");
			}
			this.reset();
		} catch (Exception e) {
			JSFUtil.addWarnMessage("Erro ao Cadastrar Cargo");
			e.printStackTrace();
		}
	}

	public void preparaAlteracao(){
		if(cargoSelecionado != null){
			cargoSalvar = cargoSelecionado;
		}
	}

	public void carregaLista(){
		try {
			this.listaCargo = (ArrayList<Cargo>) cargoDAO.buscaTodos();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void delete(){
		try {
			if(cargoSelecionado.getCodigo() > 0){
				abstractDAO.delete(cargoSelecionado);
			}else{
				JSFUtil.addWarnMessage("Tente novamente");
			}
			this.reset();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void reset(){
		this.cargoSalvar = new Cargo();
		this.cargoSelecionado = null;
		this.listaCargo = null;
	}

	public Cargo getCargoSalvar() {
		return cargoSalvar;
	}

	public void setCargoSalvar(Cargo cargoSalvar) {
		this.cargoSalvar = cargoSalvar;
	}

	public Cargo getCargoSelecionado() {
		return cargoSelecionado;
	}

	public void setCargoSelecionado(Cargo cargoSelecionado) {
		this.cargoSelecionado = cargoSelecionado;
	}

	public ArrayList<Cargo> getListaCargo() {
		return listaCargo;
	}

	public void setListaCargo(ArrayList<Cargo> listaCargo) {
		this.listaCargo = listaCargo;
	}

}
